1Writer 実績時間の出力
タスクシュートというメソッドでは、開始時刻と終了時刻を記録し、それをもとに実績時間を出します。
1Writerでも実績時間を入れられるように、コードを書きました。
インプットは、- [x] hh:mm-hh:mm \## タスク名のような形式を想定しています。## 部分は見積時間で省略可能です。
アウトプットは、- [x] hh:mm-hh:mm ##\##で、バックスラッシュの前の数字が、実績時間の分数になります。
00:00を跨ぐ処理は今後実装予定です。
code:js
// ノートからテキストを取得して処理する関数
function formatTasks(text) {
const lines = text.split('\n');
const formattedLines = lines.map(line => {
// 時刻の部分を取得
const timeMatch = line.match(/(\d{2}:\d{2})-(\d{2}:\d{2})/);
if (timeMatch) {
const startTime = timeMatch1;
const endTime = timeMatch2;
// 時間を分単位で計算
const start = new Date(1970-01-01T${startTime}:00);
const end = new Date(1970-01-01T${endTime}:00);
const duration = (end - start) / 60000; // ミリ秒を分に変換
// 既に所要時間が含まれている場合を確認し、上書き
if (line.match(/(\d+\\)/)) {
return line.replace(/(\d+\\)/, ${duration}\\);
}
// バックスラッシュがある場合、その直前に所要時間を追加
if (line.includes('\\')) {
return line.replace(/(\\+)/, ${duration}$1);
}
// バックスラッシュがない場合は、所要時間とバックスラッシュを追加
return line.replace(timeMatch0, ${timeMatch[0]} ${duration}\\);
}
return line;
});
return formattedLines.join('\n');
}
// ノートの内容を取得
const text = editor.getText();
// フォーマット処理を実行
const result = formatTasks(text);
// フォーマット後のテキストをエディタに反映
editor.setText(result);